home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 2
/
Nebula Two.iso
/
SourceCode
/
Database
/
SimpleTableView-1
/
DataTable.h
< prev
next >
Wrap
Text File
|
1995-06-12
|
4KB
|
131 lines
// -------------------------------------------------------------------------------------
// DataTable
// This software is without warranty of any kind. Use at your own risk.
// -------------------------------------------------------------------------------------
#import <objc/Object.h>
// -------------------------------------------------------------------------------------
// column data types
#define CDT_TYPES "?SBI"
#define CDT_UNKNOWN 0
#define CDT_STRING 1
#define CDT_BOOLEAN 2
#define CDT_INTEGER 3
// -------------------------------------------------------------------------------------
// column definition
#define DATATYPE_UNDEFINED 0
typedef struct {
int index; // physical ordering (0 == key)
char *keyTag; // lookup key name buffer
char *title; // column title
char type; // data type
NXCoord size; // width of column
NXCoord minSize; // minimum size of column
int displayOrder; // displayed ordering
int alignment; // column content alignment
BOOL isEditable; // content editability
BOOL isHidden; // don't show column
char *nilValue; // value equivalent to "empty"
} dataColumn_t;
// -------------------------------------------------------------------------------------
// table definition
typedef struct {
char *name;
char *access;
NXSize viewSize;
time_t date;
id columnId;
id reorderId;
id dataId;
} dataTable_t;
// -------------------------------------------------------------------------------------
// row:colmn entry
typedef struct {
char *value;
int isValid; /* -1, 0, 1 */
} dataEntry_t;
#define entryNEW ((dataEntry_t*)malloc(sizeof(dataEntry_t)))
#define entryPTR(R,C) ((R)?(dataEntry_t*)[(R) objectAt:(C)]:(dataEntry_t*)nil)
#define entryVALUE(R,C) (entryPTR(R,C)->value)
#define entryVALID(R,C) (entryPTR(R,C)->isValid)
// -------------------------------------------------------------------------------------
@interface DataTable : Object
{
id delegate;
id nullIndex;
BOOL isModified;
dataTable_t *tableHandle;
}
// -------------------------------------------------------------------------------------
- initFromFile:(const char*)fileName;
- free;
- setDelegate:aDelegate;
- delegate;
- setNullIndex:index;
- setViewSize:(NXSize*)size;
- (const NXSize*)viewSize;
- (BOOL)tableHasChanged;
- setDocEdited:(BOOL)flag;
- commitTable;
- newRowName:(const char*)rowN copyFromRow:(int)rowX;
- deleteRowAt:(int)rowX;
- (int)sortCompare:(dataColumn_t*)dc values:(const char*)val1:(const char*)val2;
- sortTableByColumn:(int)pri :(int)sec;
- sortTableByColumnName:(const char*)priName :(const char*)secName;
+ (dataColumn_t*)_column:infoId infoAt:(int)n;
- (dataColumn_t*)columnInfoAt:(u_int)col;
- (const char*)copyStringValue:(const char*)value forColumn:(int)index;
- (dataColumn_t*)orderedColumnInfoAt:(u_int)ord;
- addColumnInfo:(dataColumn_t*)dc;
- setDisplayOrder:(int)order andWidth:(float)width forColumnIndex:(int)column;
- (const char*)tableName;
- (const char*)tableTitle;
- (const char*)tableAccess;
- (u_int)actualColumnCount;
- (u_int)visibleColumnCount;
- (u_int)columnCount;
- (u_int)rowCount;
- (BOOL)hasVerificationErrors;
- (BOOL)verifyValueAt:(u_int)row :(u_int)column;
- (BOOL)verifyValue:(const char*)value dataType:(int)dataType;
- (int)indexForColumnName:(const char*)name;
- (int)indexForRowName:(const char*)rowN exactMatch:(BOOL)exact;
- (dataEntry_t*)entryAtIndex:(u_int)rowX :(u_int)colX;
- (const char*)valueForRowName:(const char*)rowN columnName:(const char*)colN;
- (const char*)valueAtIndex:(u_int)rowX :(u_int)colX;
- (const char*)valueFor:(u_int)rowIndex :(u_int)columnIndex;
- setValue:(const char*)value atIndex:(u_int)rowX :(u_int)colX;
- setValue:(const char*)value forRowName:(const char*)rowN columnName:(const char*)colN;
- setValueFor:rowIndex :colIndex from:aValue;
- setValueFor:colIndex at:(u_int)rowPosition from:aValue;
- getValueFor:rowIndex :columnIndex into:aValue;
- getValueFor:index at:(u_int)aPosition into:aValue;
- (int)scanForValue:(const char*)value inColumnName:(const char*)colN
startingAtRow:(int)rowX backwards:(BOOL)back;
- (time_t)timestamp;
- readTableColumns;
- readTableData;
- writeTable;
@end